package com.yx.changdao.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yx.changdao.common.entity.SysMenu;
import com.yx.changdao.common.exception.AlertException;
import com.yx.changdao.common.vo.menu.MenuVO;
import com.yx.changdao.common.vo.MenuTreeVo;
import com.yx.changdao.common.vo.menu.ZMenuTVO;

import java.util.List;

/**
 * @Description: <br />
 * 系统菜单服务。
 * <p>
 * <br />
 * @Auther: Zhangjiashun
 * @create 2019/11/18 9:35
 */

public interface SysMenuService extends IService<SysMenu> {


    /**
     * 添加菜单
     *
     * @return 添加后的菜单
     */
    SysMenu addMenu(SysMenu sysMenu) throws AlertException;

    /**
     * 添加菜单
     *
     * @param icon         菜单图标
     * @param menuName     菜单名
     * @param menuParent   父级菜单
     * @param uri          对应前端页面名
     * @param sort         菜单排序
     * @param permissionId 权限id
     * @return 添加后的菜单
     */
    SysMenu addMenu(String icon, String menuName, String menuParent, String uri, int sort, String permissionId) throws AlertException;

    /**
     * 获取展示菜单
     *
     * @return 菜单列表
     */
    List<SysMenu> getDisplayMenus();
    /**
     * 获取所有展示菜单
     * @return 菜单列表
     */
    List<MenuTreeVo> getAllDisplayMenus();
    /**
     * 更新菜单
     *
     * @param sysMenu 菜单
     * @return 是否更新成功
     * @throws AlertException 异常
     */
    Boolean updateMenu(SysMenu sysMenu) throws AlertException;

    /**
     * 删除菜单
     *
     * @param menuId 菜单id
     * @return 是否删除成功
     * @throws AlertException 异常
     */
    Boolean delMenu(String menuId) throws AlertException;

    /**
     * 返回全部路由
     */
    List<MenuVO> menus() throws AlertException;

    /**
     *登陆后返回路由
     */
    List<ZMenuTVO> route() throws AlertException;
}
